import { http } from "@/utils/http";
import type { HealthArchiveDetailData, RequestResponse } from "./types";

export const healthApi = {
  // 获取健康档案详情
  getHealthArchiveDetail: (params: { userId: number }) => {
    return http.request<RequestResponse<HealthArchiveDetailResponse>>(
      "get",
      "/api/v1/hdl/app/archive/detail",
      { params }
    );
  },
  // 更新健康档案基本信息
  getHealthArchiveUpdateBasic: (data: HealthArchiveBaseInfo) => {
    return http.request<RequestResponse<void>>(
      "post",
      "/api/v1/hdl/app/archive/update/basic",
      { data }
    );
  },
  // 更新健康档案健康信息
  getHealthArchiveUpdateHealth: (data: HealthArchiveHealthInfo) => {
    return http.request<RequestResponse<void>>(
      "post",
      "/api/v1/hdl/app/archive/update/health",
      { data }
    );
  },
  // 更新健康档案生活方式
  getHealthArchiveUpdateLifestyle: (data: HealthArchiveLifestyleInfo) => {
    return http.request<RequestResponse<void>>(
      "post",
      "/api/v1/hdl/app/archive/update/lifestyle",
      { data }
    );
  },
  // 获取健康档案列表
  getHealthArchiveSearch: (data: any) => {
    return http.request<RequestResponse<HealthArchiveSearchResponse>>(
      "post",
      "/api/v1/hdl/app/archive/search",
      { data }
    );
  },
  // 获取家庭档案列表
  getHealthArchiveFamilySearch: (data: any) => {
    return http.request<RequestResponse<HealthArchiveFamilySearchResponse>>(
      "post",
      "/api/v1/hdl/app/archive/family/search",
      { data }
    );
  },
  // 获取健康档案详情
  getDetail: (params: { userId: number }) => {
    return http.request<RequestResponse<HealthArchiveDetailData>>(
      "get",
      "/api/v1/hdl/app/archive/detail",
      {
        params
      }
    );
  },
  createHealthArchive: (data: any) => {
    return http.request<RequestResponse<void>>(
      "post",
      "/api/v1/hdl/app/archive/create",
      { data }
    );
  },
  // 更新健康档案其他记录
  getHealthArchiveUpdateOtherRecord: (data: {
    archiveId: number;
    otherRecords: string;
    requestSource: number;
  }) => {
    return http.request<RequestResponse<void>>(
      "post",
      "/api/v1/hdl/app/archive/update/otherRecord",
      { data }
    );
  },
  getHealthArchiveUpdateHealthCategory: (data: {
    dateType: number; //1-风险等级，2-健康分类
    dataId: string; //风险等级ID，或健康分类ID
    userId: number;
  }) => {
    return http.request<RequestResponse<void>>(
      "post",
      "/api/v1/hdl/app/archive/update/healthCategory",
      { data }
    );
  }
};

// 健康档案详情响应结构体
export interface HealthArchiveDetailResponse {
  archiveBasicInfo: HealthArchiveBaseInfo; // 基本信息
  archiveHealthInfo: HealthArchiveHealthInfo; // 健康信息
  archiveLifestyleInfo: HealthArchiveLifestyleInfo; // 生活方式
  // archiveAssessmentInfo: HealthArchiveAssessmentInfo[]; // 评估信息
  // archiveFollowupInfo: HealthArchiveFollowupInfo[]; // 随访信息
}

// 健康档案-基本信息
export interface HealthArchiveBaseInfo {
  userId: number; // 用户ID，必需
  gender?: string; // 性别，1-男 2-女，示例值: 男
  birthDate?: string; // 出生日期，时间戳（毫秒），示例值: 1642219200000
  ethnicity?: string; // 民族
  phone?: string; // 本人电话
  idCard?: string; // 身份证号
  emergencyContactName?: string; // 联系人姓名
  emergencyContactPhone?: string; // 联系人电话
  emergencyContactAddress?: string; // 联系人地址
  education?: string; // 文化程度
  occupation?: string; // 职业
  maritalStatus?: string; // 婚姻状况
  medicalInsurance?: string; // 医疗支付方式
  livingHistory?: string; // 生活史
  workHistory?: string; // 工作史
  archiveId?: number; // 档案ID
  requestSource?: number; // 请求来源，可选
}

export interface HealthArchiveHealthInfo {
  currentIllness?: string; // 现病史，可选
  pastIllness?: string; // 既往病史，可选
  familyHistory?: string; // 家族病史，可选
  currentSymptoms?: string; // 现在症状，可选
  allergyHistory?: string; // 过敏史，可选
  surgeryHistory?: string; // 手术史，可选
  traumaHistory?: string; // 外伤史，可选
  medications?: MedicationPrescriptionDetail[]; // 用药史，可选
  archiveId: number; // 档案ID，必需
  archiveHealthInfoId?: number; // 健康档案信息ID，可选
  requestSource?: number; // 请求来源，可选
}

export interface HealthArchiveLifestyleInfo {
  smokingStatus?: string; // 吸烟情况，可选
  dietHabits?: string; // 饮食习惯，可选
  drinkingStatus?: string; // 饮酒情况，可选
  exerciseStatus?: string; // 运动情况，可选
  archiveId: number; // 档案ID，必需
  archiveLifestyleId?: number; // 档案生活史ID，可选
  requestSource?: number; // 请求来源，可选
}

export interface MedicationPrescriptionDetail {
  dataType: number; // 数据类型，必需。1：体检报告，2：健康档案-健康建议，3：健康档案-健康信息
  dataId: number; // 数据ID，必需。1、dataType=1，报告ID；2、dataType=2，健康档案ID；3、dataType=3，健康档案ID
  drugName: string; // 药品名称，必需
  usageMethod: string; // 用法，必需 (如: 口服, 外敷, 注射)
  doseQuantity: string; // 单次剂量数量，必需
  doseUnit: string; // 单次剂量单位，必需 (如: 片, 粒, ml)
  frequency: string; // 用药频次，必需 (如: 每日1次, 每日2次)
  timing: string; // 用药时间，必需 (如: 餐前, 餐后, 空腹)
  startDate: number; // 开始用药日期，必需
  treatment?: string; // 疗程，可选 (例如：3个月)
  notes?: string; // 备注信息，可选
}

// 健康档案搜索项
export interface HealthArchiveItem {
  userId?: number;
  userName?: string;
  familyMemberName?: string;
  gender?: string;
  birthDate?: string;
  ethnicity?: string;
  specialAttentionLevel?: number;
  riskLevel?: string;
  healthCategory?: string;
  createDate?: string;
  familyId?: number;
}

// 健康档案搜索响应
export interface HealthArchiveSearchResponse {
  list: HealthArchiveItem[];
  total: number;
  pageNum: number;
  pageSize: number;
}

// 家庭档案搜索响应
export interface HealthArchiveFamilySearchResponse {
  list: HealthArchiveFamilySearch[];
  total: number;
  pageNum: number;
  pageSize: number;
}

// 家庭档案搜索项
export interface HealthArchiveFamilySearch {
  familyId?: number; // 家庭ID, 用于家庭报告-查询全部，可选
  executiveName?: string; // 高管名称，可选
  familyMemberCount?: number; // 家庭人数，可选
  familyMemberName?: string; // 家庭成员姓名，可选
  specialAttentionLevel?: number; // 关注度，可选，示例值: 1
  createDate?: string; // 创建日期，可选
}
